#ifndef NAITO_ACTION_H
#define NAITO_ACTION_H

#include <naito/naitolib.h>

class Naitoaction :public Naitolib
{
  //状態を表す変数
  enum BehaviorState {
    ACT1,
    ACT2,
    ACT3,
    ACT4
  };
  
 public:
    Naitoaction(Worldmodel::shared_ptr world) : Naitolib(world) {}
    ~Naitoaction(){};
    
    /* 行動部分を記述する関数 */
    bool action() {
	init();

	Worldmodel::TStatus& wst = world_->current_status();
	static BehaviorState state = ACT1; //状態を保持する変数

	
	//Kick Off 前の動作：初期位置に移動
	if (wst.gs_pm_ == "BeforeKickOff") {
	  beam(-5,0,0);
	}

	//それ以外：sample動作
	else{
	  
	  //state変数に応じた分岐
	  switch(state) {
	    
	        case ACT1:
	          //raj2=-90 & laj2=90 のとき:ACT2へ
	          if ( !set("raj2", -90) |
	               !set("laj2", +90)) 
	               state = ACT2;
		  break;

	        case ACT2:
		  //raj3=-90 & laj3=90 のとき:ACT3へ
	          if ( !set("raj3", -90) |
		       !set("laj3", +90))
		      state = ACT3;
		  break;

		case ACT3:
		  //raj4=90 & laj4=90 のとき:ACT4へ
		  if ( !set("raj4", +90)|
		       !set("laj4", +90))
			state = ACT4;
		  break;


		case ACT4:
		  //raj4=45 & laj4=45 のとき:ACT3へ
		  if ( !set("raj4", +45)|
		       !set("laj4", +45))
			state = ACT3;
		  
		  /* ↑は、こういう書き方もできます：お好きなほうで
		  if (get("raj4")==45 && get("laj4")==45){
		    state = ACT3;
		  }else{
		    set("raj4", +45);
		    set("laj4", +45);
		  }
		  */

		  break;
		default:   
		  break;
	    }	    
	 }
	
	setangle(); //メッセージの送信
	return true;
    }
    
};

#endif//NAITO_ACTION_H
